//
//  StatusViewModel.swift
//  Weibo8023
//
//  Created by styshy on 15/12/11.
//  Copyright © 2015年 sz. All rights reserved.
//

import UIKit

class StatusViewModel:CustomStringConvertible {
    
    // 微博的模型
    var status:Status
    
    // 表格的可重用表示符号
    var cellId:String{
        return status.retweeted_status != nil ? StatusCellRetweetedId :StatusCellNormalId
    }
    
    /// 微博创建时间
    var createAt: String? {
        return NSDate.sinaDate(status.created_at ?? "")?.dateDescription
    }
   
    /// 缓存的行高
    lazy var rowHeight: CGFloat = {
        // 1. cell
        // 定义 cell
        var cell: StatusCell
        
        // 根据是否是转发微博，决定 cell 的创建
        if self.status.retweeted_status != nil {
            cell = StatusRetweetedCell(style: .Default, reuseIdentifier: StatusCellRetweetedId)
        } else {
            cell = StatusNormalCell(style: .Default, reuseIdentifier: StatusCellNormalId)
        }
        
        // 2. 记录高度
        return cell.rowHeight(self)
    }()

    // 用户头像URL
    var userProfileUrl:NSURL{
        return NSURL(string: status.user?.profile_image_url ?? "")!
    }
    
    // 用户默认头像
    var userDefautlIconView:UIImage{
        return UIImage(named: "avatar_default_big")!
    }
    
    // 用户会员图标
    var userMemberImage:UIImage? {
        // 根据mbank来生成头像
        
        if status.user?.mbrank > 0 && status.user?.mbrank < 7{
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")
//            common_icon_membership_level1
        }
        return nil
    }
    
    /// 用户认证图标
    /// 认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    var userVipImage: UIImage? {
        
        switch(status.user?.verified_type ?? -1) {
        case 0: return UIImage(named: "avatar_vip")
        case 2, 3, 5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    
    /// 内容图片，是可选项，在对象创建的时候需要初始化
    // 如果是原创微博，可以有图，也可以没有图
    // 如果是转发微博，pic_urls一定没有图
    
    var thumbnailUrls:[NSURL]?
    
    
    var retweetedText:String?{
        
        guard let s = status.retweeted_status else{
            return nil
        }
        
        return (s.user?.screen_name ?? "") + ":" + (s.text ?? "")
    }
    
    /// 构造函数
    init(status: Status) {
        self.status = status
        
        // 如果转发微博不存在
        if let urls = status.retweeted_status?.pic_urls ?? status.pic_urls{
            
            thumbnailUrls = [NSURL]()
            
            for dict in urls {
                let url = NSURL(string: dict["thumbnail_pic"]!)
                thumbnailUrls?.append(url!)
            }
        }
    }

    var description: String {
        
        return status.description
    }
    
}
